package com.moter.demo01.niukeoffer.数组;

/**
 *给定一个 排序 数组，你需要在 原地 删除重复出现的元素，使得每个元素只出现一次，返回移除后数组的新长度。
 * 不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/
 * 来源：力扣（LeetCode）
 *
 * 利用双指针法。
 * 由于是一个排序数组，所以，重复的元素肯定是相邻的。
 * i指针指向被修改后的数组，j指向原数组。
 * 如果i和j位置上面的元素相同，则j++,否则，i++，并且把j位置上的元素赋值给i++位置的元素。这样就可以剔除重复的元素。
 *
 */
public class Demo1 {
    public static int removeDuplicates(int[] nums) {
        if(nums.length==0) return 0;
        int i =0;
        for(int j = 1;j<nums.length;j++){
            if(nums[i]!=nums[j]){
                i++;
                nums[i]=nums[j];
            }
        }
        return i+1;
    }
    public static int maxProfit(int[] prices) {
        if(prices.length<=1) return 0;
        int res=0;
        int numi= prices[0];
        int numj=prices[0];
        for(int i =1;i<prices.length;i++){
            if(prices[i]>numj){
                numj=prices[i];
                if(i>prices.length-2)
                    res += Math.max(numj - numi, 0);
            }else {
                res += Math.max(numj - numi, 0);
                numi=prices[i];
                numj=prices[i];
            }
        }
        return res;
    }
    public static void main(String[] args) {
        System.out.println(maxProfit(new int[]{7, 1, 5, 3, 6, 4}));
    }
}
